Crate add_syntax

source ·
Expand description

Attribute macros that prepend or append arbitrary syntax. Useful with cfg_attr.

This crate provides two attribute macros, prepend and append, that add the tokens passed to them to the start or end of the item to which the attribute is applied, respectively. This is particularly useful with cfg_attr.

Example

Conditionally applying unsafe when #[may_dangle] is used:

#[cfg_attr(feature = "dropck_eyepatch", add_syntax::prepend(unsafe))]
impl<#[cfg_attr(feature = "dropck_eyepatch", may_dangle)] T> Drop
    for Foo<T>
{
    fn drop(&mut self) { /* ... */ }
}

If the hypothetical feature dropck_eyepatch is enabled, the code above is equivalent to:

unsafe impl<#[may_dangle] T> Drop for Foo<T> {
    fn drop(&mut self) { /* ... */ }
}

Otherwise, if the feature is not enabled, the code is equivalent to:

impl<T> Drop for Foo<T> {
    fn drop(&mut self) { /* ... */ }
}

Attribute Macros

Adds the tokens provided to this attribute to the end of the item to which this attribute is applied.
Adds the tokens provided to this attribute to the start of the item to which this attribute is applied.